package com.stx.day0918;

/**
 * packageName com.stx.day0918
 *
 * @author YangYi
 * @className AnimalDemo
 * @date 2025/9/18
 * @description TODO
 */
public class AnimalDemo {
    /**
     * 多态：
     * 1、继承
     * 2、重写方法
     * 3、必须子类对象赋值给父类使用
     * @param args
     */
    public static void main(String[] args) {
        // 正常同类接收
//        Dog dog = new Dog();
        // 向上转型（安全）
        Animal animalDog = new Dog();
        animalDog.sound();
        // 向下转型
        if(animalDog instanceof Dog) {
            Dog dog = (Dog) animalDog;
            dog.fetch();
        }
        Animal animalCat = new Cat();
        animalCat.sound();
        // 向下转型-安全问题需要人为的去判断是否可行
//        Dog dog1 = (Dog) new Animal();
    }
}
